Many devices, such as routers, use switched crossbars that operate at high data rates. These crossbars utilize serial links to transmit data in serial format. SerDes (Serializer/Deserializer) units are required to convert between parallel data processed by line cards and the serial data transmitted on the backplane. For high speed serial links the SerDes unit uses a serial interleaver that interleaves two serial data streams having the same data rate (for example, running at 3.125 Gb/s each) into a single serial data stream running at twice the data rate (for example, 6.125 Gb/s). This allows full utilization of the high-speed serial link with devices that provide data at lower speed.
Many SerDes units use 8b/10b encoding which is ideally suited for high-speed serial data links. The code scheme is DC-balanced which is beneficial to allow threshold setting and equalization. Also, the code ensures a limited run length, no more than five consecutive ones or zeros, and a guaranteed transition density, which facilitates clock recovery from the data stream.
A special set of K characters are used to delimit packets. A subset of K characters, known as commas, are unique in that their bit pattern never occurs in a string of serialized data symbols so that the commas can be used to determine symbol boundaries at the receiving end.
The 8b/10b encoding format encodes 8-bit input data into 10-bit symbols for transmission. The 8-bit blocks are partitioned into 5-bit and 3-bit sub-blocks which are respectively encoded into 6-bit and 4-bit sub-blocks. A prefix of D or K is used to distinguish between data and special characters. A symbol is named by its prefix and the decimal values of its sub-blocks. For example, D31.1 is a data symbol having a first sub-block of (1111) which has a decimal value of 31 and a second sub-block of (100) having a decimal value of 1. Note that the LSB is on the left.
The disparity of a block of data is defined as the difference between the number of ones and zeros in the block. A positive disparity reflects the excess of 1s over 0s. Each symbol may be encoded in two ways; a primary encoding with a positive disparity and an alternate encoding with a negative disparity. The encoder selects the disparity of the symbol to maintain a running disparity value between +1 and −1 to achieve the goals of maintaining transition density and limited run lengths.
In all SerDes units, after individual bit alignment has been established, the beginning and ending of each symbol being transmitted in a serial data stream must be determined because byte boundaries associated with the parallel data are lost during serialization. Accordingly, as described above, most SerDes units send a series of special characters known as commas.
All of these commas are unique characters within the 8B/10B code that begin with either a 1100000XXX or 0011111XXX, depending on disparity and individual K character rules. These versions are called primary (positive disparity) and alternate (negative disparity) versions. These commas are sent in a predetermined fashion so that the clock recovery unit can locate the boundaries of the symbols being transmitted by a SerDes unit.
The K characters that include commas are K28.1, K28.5, and K28.7. As described above these K characters are transmitted as positive or negative disparity versions depending on the running disparity.
For existing serial interleavers, there is no correlation between the input channels and the output channels. Thus, if serial channel A and B are interleaved each of the received de-interleaved channels has an equal probability of being serial channel A or serial channel B.
Currently, there is no simple solution to distinguish between the two streams originally interleaved after the receive end de-interleaves them.